package day63_260;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

/**
 * @ClassName Solution
 * @Description TODO
 * @Author clockTown
 * @Date 2021/7/11 18:54
 * @Version 1.0
 */
public class Solution1 {
    public int[] singleNumber(int[] nums) {
        int bitmask = 0;
        //把数组中的所有元素全部都异或一遍
        for (int num : nums) {
            bitmask ^= num;
        }

        //bitmask &= -bitmask 表示的是把bitmask二进制中最右边的1保留，其他位置全部变为0
        bitmask &= -bitmask;
        int[] rets = {0, 0};
        for (int num : nums) {
            //通过num & bitmask把数组分为两部分，每部分在分别异或
            if ((num & bitmask) == 0) {
                rets[0] ^= num;
            } else {
                rets[1] ^= num;
            }
        }
        return rets;
    }
}
